草庐IT

linux - 在 bash 脚本中,如何在 while 循环条件中使用函数退出状态

下面是我的shell脚本。如何比较while循环条件block中函数的退出状态?无论我从check1函数返回什么,我的代码都会进入while循环#!/bin/shcheck1(){return1}while[check1]doecho$?check1if[$?-eq0];thenecho"Called"elseecho"DD"fisleep5done 最佳答案 删除test命令-也称为[。所以:whilecheck1do#Loopwhilecheck1issuccessful(returns0)ifcheck1thenecho'ch

python - Bash:单引号中的变量

先看看这道题:BashorGoogleCL:newlineinastringparameter我现在想在“摘要”中添加一个变量${date}:googleyoutubepost~/videos/cat-falls-down-stairs.aviComedy\--tags'currencyoftheinternet'\--summary$'Todayis${date}.Poorwhiskerstakesatumble.\nShe'\''sfine,though,don'\''tworry.'但变量不会在bash中的单引号内扩展。有可能吗?备注:GoogleCL是一个用python编写的命

linux - 大于/小于中断 bash 脚本的多个 -a

我写了一个bash脚本,只在工作时间执行curl调用。出于某种原因,当我添加“-a”运算符时每小时比较失败(并且出于某种原因我的bash无法识别“&&”)。虽然脚本要大得多,但这里是相关的部分:HOUR=`date+%k`if[$HOUR>7-a$HOUR脚本给我错误:./tracksync:(lastline):Cannotopen(linenumber):Nosuchfile但是,这个比较并没有失败:if[$DAY!="SUNDAY"-a$HOUR>7];then//dosyncfi是我的语法错误还是我的bash有问题? 最佳答案

linux - 如果在 Bash 中工作,我怎样才能做到这一点?

在bash中,我怎样才能使这样的结构起作用:if(cp/folder/path/to/path)&&(cp/anotherfolder/path/to/anotherpath)thenecho"Succeeded"elseecho"Failed"fiif应该测试$?返回每个命令的代码并用&&将它们绑定(bind)。我怎样才能在Bash中做到这一点? 最佳答案 ifcp/folder/path/to/path/tmp&&cp/anotherfolder/path/to/anotherpath;thenecho"ok"elseecho"

linux - 如何在 bash/linux 脚本中执行相同的循环 1 小时?

我想以随机间隔打开和关闭一些网页一个小时。到目前为止我已经写完了内部结构FILE=webpagesTIMES=0whiletest$TIMES-lt10do#Picksrandomline(Website)fromFILETEMPWEB=`shuf-n1$FILE`echo"Opening"$TEMPWEB#OpensTEMPWEBxdg-open$TEMPWEBsleep10#Killsfirefoxps-e|grepfirefox|sed's/\(.[0-9]*\).*/\1/'|xargskillTIMES=$(($TIMES+1))done所以我错过了while条件。我想要这样

linux - 如何从 bash 中的字符串中获取最后一个数字?

对不起,我会解释得更好如何从字符串中获取最后一个数字?泛型字符串的例子:Ifstr=str1s2echo$str|cmd?Iget2Ifstr=234ef85echo$str|cmd?Iget85Ifstr=djfs1d2.3echo$str|cmd?Iget3“命令?”是我想要的命令/脚本 最佳答案 你只需要grep-Eo'[0-9]+$':gv@debian:~$echo234ef85|grep-Eo'[0-9]+$'##-->85gv@debian:~$echo234ef856|grep-Eo'[0-9]+$'##-->856

linux - Git Bash 与 Oracle VM VirtualBox

我已经下载CentOS7minimalISOimage并通过OracleVMVirtualBox在我的Windows8.1机器上创建了一个虚拟机。我不想使用VirtualBoxshell。我要使用GitBash作为界面。虚拟机必须正在运行,但我如何使用GitBash作为连接该虚拟机的接口(interface)?是否有像sshusername@localhost这样的命令可以在GitBash中使用,以便将我连接到虚拟机?谢谢! 最佳答案 我遇到了同样的问题,我已经做了几个步骤来实现这个,创建仅主机适配器以在每次机器启动时获取DHCP(

用于交互式 bash 的 C 接口(interface)

我正在为bashshell寻找C接口(interface)。IE。我想要一组函数,允许我打开session、执行命令、返回输出(STDOUT、STDERR)并最终关闭shell。它可以是库或基于标准库的C源代码。 最佳答案 一般的根本问题似乎是如何以编程方式运行交互式终端程序。现在这对我来说需要实际测试,但您大致需要创建三个pipes对应子进程stdin、stdout、stderr(父进程写stdin_pipe,读stdout_pipe和stderr_pipe)使用pipe(2)系统调用;fork在child身上close通过调用d

c - 如何在干净的环境中从 C 调用 bash?

我正在尝试设置我的计算机,以便我可以使用连接到python脚本的外部设备对自己进行身份验证。我首先用我自己的程序替换了inittab中的login程序,并且我已经能够进入bashshell。问题是它没有像(我推测)通过login提供的环境那样的新环境。我知道有很多方法可以让我弄乱环境,但我还没有找到给它一个“默认”配置的方法,如果这样的事情有意义的话。 最佳答案 一些想法:首先,在大多数情况下,使用可插入登录架构PAM会更好。这将确保所有支持PAM的应用程序和服务都可以使用身份验证方法(例如ssh),并且无法使用常规服务绕过它。如果

linux - 从 bash 脚本启动时 Logstash 关闭停止

我编写了一个bash脚本,它在指定的文件夹中查找CSV文件,并使用正确的配置文件将它们通过管道传输到logstash中。然而,当运行这个脚本时,我遇到了以下错误,说关闭过程被停滞,导致无限循环,直到我用ctrl+c手动停止它:[2018-03-22T08:59:53,833][INFO][logstash.runner]StartingLogstash{"logstash.version"=>"6.2.3"}[2018-03-22T08:59:54,211][INFO][logstash.agent]SuccessfullystartedLogstashAPIendpoint{:por